Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Introduce crmManager #14272

Merged
merged 182 commits into from
May 31, 2024
Merged

refactor: Introduce crmManager #14272

merged 182 commits into from
May 31, 2024

Conversation

joeauyeung
Copy link
Contributor

@joeauyeung joeauyeung commented Mar 30, 2024

Stacked on #14261

What does this PR do?

This PR separates the handling of CRM apps from the calendar manager into it's own crmManager.

  • Introduces CrmManager
  • Moves CRM apps CalandarService into CrmService
  • Refactor logic that was in individual apps into the CrmManager

Fixes #14452

Requirement/Documentation

  • If there is a requirement document, please, share it here.
  • If there is a UI/UX design document, please, share it here.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Chore (refactoring code, technical debt, workflow improvements)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)

How should this be tested?

  • For each CRM app

    • Install the CRM app
    • Create a booking
      • A new contact should be created under the CRM app
    • Create a second booking with the same attendee info
    • Update the booking. Should be reflected in the CRM app
    • Delete the booking. Should be reflected in the CRM app
  • Should be tested on

    • Close.com
    • Hubspot
    • Pipedrive
    • Salesforce
    • Zoho CRM
    • Zoho Bigin

Mandatory Tasks

  • Make sure you have self-reviewed the code. A decent size PR without self-review might be rejected.

Shaik-Sirajuddin and others added 30 commits March 18, 2024 17:12
SomayChauhan

This comment was marked as off-topic.

Copy link
Member

@SomayChauhan SomayChauhan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just wanted to share that with the new app flow installed and CRM apps now extending eventTypes, the process for installing flow for CRM apps has changed. Here's a demonstration of the updated installation process:

Watch the video

Note that I only installed Zoho for 2 events, but it is enabled for all personal account events.

@sean-brydon
Copy link
Member

Just wanted to share that with the new app flow installed and CRM apps now extending eventTypes, the process for installing flow for CRM apps has changed. Here's a demonstration of the updated installation process:

Watch the video

Note that I only installed Zoho for 2 events, but it is enabled for all personal account events.

@SomayChauhan are you able to take this up to look into why this is happening? I feel like you may be the most comfortable with this part of app store code alongside @hariombalhara and @joeauyeung

@SomayChauhan
Copy link
Member

SomayChauhan commented May 30, 2024

@SomayChauhan are you able to take this up to look into why this is happening? I feel like you may be the most comfortable with this part of app store code alongside @hariombalhara and @joeauyeung

I'm looking into it!

@keithwillcode
Copy link
Contributor

@zomars @SomayChauhan was able to get the tests passing! We are ready to ship this separately today. https://github.com/calcom/cal.com/actions/runs/9302242199

@keithwillcode keithwillcode added this pull request to the merge queue May 31, 2024
Merged via the queue into main with commit 625a7ec May 31, 2024
24 checks passed
@keithwillcode keithwillcode deleted the crm-manager branch May 31, 2024 14:16
p6l-richard pushed a commit to p6l-richard/cal.com-fork that referenced this pull request Jul 22, 2024
* fix timezone display on booking page to reflect event availability timezone

* migrate fetching event owner's schedule to server side

* migrate fetching event owner's schedule to server side

* fix e2e test errors

* Add WEBAPP_URL_FOR_OAUTH to salesforce auth

* In event manager constructor include "_crm" credentials as calendar creds

* Change crm apps to type to end with `_crm`

* Move sendgrid out of CRM

* Add zoho bigin to CRM apps

* When getting apps, use slug

* Add `crm` variants

* Hubspot Oauth use `WEBAPP_URL_FOR_OAUTH`

* Refactor creating credentials

* Fix empty CRM page

* Use credentials with `_crm`

* Abstract getAppCategoryTitle

* Add integration.handler changes

* Init crmManager

* Change salesforce to CrmService

* Create crmManager

* Create contact on new event

* Create event

* Create new CRM reference

* - Fix create new contact for salesforce
- Add reschedule to crmManager

* Create deleteAllCRMEvents

* When searching for credential, look for current credentials in class

* On cancel, delete 3rd party events

* Add delete method

* Type fix

* Type fix

* Convert Close.com to CrmService

* Convert Close.com to CrmService

* Move hubspot to CrmService

* Convert Pipedrive to CrmService

* Rename classes to CrmService

* Move ZohoCrm to CrmService

* Move Bigin to CrmService

* Type return for CrmServices

* Fix type errors

* Close.com create leads and contacts

* Fix tests

* Type fix

* Zoho bug fixes

* Clean up

* Type fixes

* Remove apiDeletes

* Type fixes

* Specific typing

* Type fix

* Type fix

* Type fix

* Type fix

* Type fix

* feat: Enable CRM apps on a per event type basis (calcom#14450)

* Add Salesforce to be an event type app

* Handle new booking, only get enabled CRM credentials

* Abstract generating search params

* Add close.com to event type

* Clean up

* Move hubspot to event type

* Add pipedrive to event type

* Add zoho bigin to event type

* Add zoho crm to event type

* Remove console.log

* Add deleting CRM apps from event type

* Delete event type apps

* Fix deleting credentials

* Add CRM app data to event type metadata

* Backwards compatibility: add CRM credential if doesn't exist on event type

* Don't include user CRM credentials for backwards comp

* Backwards compatibility show CRM app is enabled and dirty field

* Clean up

* Type fixes

* Type fixes

* Type fix

* Type fix

* Remove console.log

* Test fix

* Upgrade embed-react vite version - dev

* Change build can't find error message

* Add back omni install prop

* Clean up

* Refactor `writeAppDataToEventType`

* Use eventType repository in writeAppDataToEventType

* Clean up old comments

* Add error logging

* createCRMEvents pass event uid as created event uid

* Use `getUid`

* Clean up props in create crm event

* Small changes to `crmManager`

* Fix zoho CRM

* refactor crmManager

* Undo vite config change

* Fix teamId query

* Fix bigin error

* Remove need for `writeAppDataToEventType`

* Add `getAllCredentials` test

* Add crmManager tests

* Type fixes

* Fix type errors

* Fix getAllCredentials test

* Fix tests

* Skip CRM manager tests for now

* feat: Skip RR Assignment if Contact Exists In Salesforce (calcom#14556)

Co-authored-by: CarinaWolli <wollencarina@gmail.com>

* Update yarn.lock

* @zomars feedback - use new URL for state params

* fix: update hook to not produce enabled === undefined

* fix: update app card interfaces to use the new enabled from useIsAppEnabled

* fix: feedback for crm RR skip (calcom#15160)

* code clean up

* fix type any

* test setup for RR lead skip

* code clean up

* simplify code

* type error

* finshed first test for RR lead skip

* add seconds test

* add test for handleNewBooking

* test if teamMember is set

* fix missing enabled key

* fix tests

* fix type error

* use setSystemTime instead of getDate

* remove nested if

---------

Co-authored-by: CarinaWolli <wollencarina@gmail.com>

* fix type error

* fix: remove app metadata from all eventTypes on deleting the app

* fix: update hook to not produce enabled === undefined (default to false)

---------

Co-authored-by: Shaik-Sirajuddin <sirajuddinshaik30gmail.com>
Co-authored-by: Shaik-Sirajuddin <sirajudddinshaik30@gmail.com>
Co-authored-by: Shaik-Sirajuddin <89742297+Shaik-Sirajuddin@users.noreply.github.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: sean-brydon <sean@cal.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Somay Chauhan <somaychauhan98@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
consumer core area: core, team members only crm-apps area: crm apps, salesforce, hubspot, close.com, sendgrid ✨ feature New feature or request foundation High priority Created by Linear-GitHub Sync 💻 refactor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[CAL-3344] Introduce CRMManager class
9 participants